// pages/offerFast/offer/offer.js
import config from '../../../utils/config'
import utils from '../../../utils/util'
let Charts = require('../../../utils/wxcharts-min.js');
import {
  productModel
} from '../../../models/product';
const product = new productModel();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    config: config,
    nvabarData: {
      showCapsule: 1, //是否显示左上角图标   1表示显示    0表示不显示
      title: '报价',
      //  导航栏 中间的标题
    },
    id: '', // 产品id
    type: 1, // 1首页，2报价，3搜索
    detail: '', // 产品详情
    specificationList: [],
    specificationList1: '',
    goodsPrice: [], // 商品价格
    lastPrice: '', // 原价格

    modifyItem: '', // 修改的商品信息
    show2: false,
    pindex: 0,

    date: '',//默认起始时间  
    date2: '',//默认结束时间 
    maxDate:'',
    chartFlag: false,

    legendData: '',
    canvasTemImg: '',
    colorList: ['#3FDA93','#2FBEE4','#F18C58','#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83',  '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3'],

    canteenLabelList: [], // 食堂等级列表
    priceTypeList: ['默认商品价格'], // 价格类型列表
    priceTypeSelected: 0, // 选中的价格类型
    priceTypeShow: false, // 选择价格类型popup
    echartData: '', // 图表数据
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var id = options.id
    var type = options.type
    var quote = options.quote

    // type=1,2从报价tab页面进来的，记录上一页面点击进来的下标，方便返回的时候刷新这条数据
    this.pageindex = options.pageindex?options.pageindex:null

    if(quote != 1){
      var nvabarData = this.data.nvabarData
      nvabarData.title = '修改价格'
      this.setData({
        nvabarData: nvabarData
      })
    }
    this.setData({
      id: id,
      type: type,
    })
    var nowDate = new Date()
    var year = nowDate.getFullYear()
    var mouth = nowDate.getMonth()+1
    var day = nowDate.getDate()
    var time=7*24*60*60*1000;　　//每天的时间戳差值
    var todayTimeStamp=nowDate.getTime();　　//今天的时间戳
    var finalDay=new Date(todayTimeStamp-time);　　//最后一天的时间戳 ，几天前是减 ，几天后就改成加
    var Y=finalDay.getFullYear();　　　//年
    var M=finalDay.getMonth()+1;　　//月
    var D=finalDay.getDate();　　　　//日

    var defaultDate = Y+'-'+M+'-'+D
    var date2 = year+'-'+mouth+'-'+day
    var maxDate = date2
    this.setData({
      date: defaultDate,
      date2: date2,
      maxDate: maxDate
    })
    this.getLabelName() // 查询食堂等级列表
    this.getLast() // 最新报价数据
  },
  // 开始时间段选择  
  bindDateChange(e) {
    let that = this;
    console.log(e.detail.value)
    that.setData({
      date: e.detail.value,
    })
  },
  // 结束时间段选择 
  bindDateChange2(e) {
    let that = this;
    that.setData({
      date2: e.detail.value,
    })

  },
  // 食堂等级列表
  getLabelName() {
    product.labelListAll(res => {
      var priceTypeList = ['默认商品价格']
      for(var i=0;i<res.length;i++){
        priceTypeList.push(res[i].labelName+"价格")
      }

      this.setData({
        canteenLabelList: res,
        priceTypeList: priceTypeList
      })
      this.getDetail() // 查询产品详情
    })
  },
  // 查询产品详情
  getDetail(){
    product.productFindById({
      productId: this.data.id
    }, res => {
      var specificationList = [];
      var s = res.data.productSpecVoList;
      for(var j=0;j<s.length;j++){
          var p = {
              name: s[j].specName
          }
          var p_enums = [];
          for(var k=0;k<s[j].productSpecValueList.length;k++){
              p_enums.push(s[j].productSpecValueList[k].specValue)
          }
          p.p_enums = p_enums;
          specificationList.push(p)
      }
      var goodsPrice = [],goodsPriceCopy = []
      for(var g=0;g<res.data.goodVoList.length;g++){
        res.data.goodVoList[g].goodLabelPriceList = this.labelInfoWith(this.data.canteenLabelList, res.data.goodVoList[g].goodLabelPriceList)
        goodsPrice.push({
          price: res.data.goodVoList[g].price,
          goodLabelPriceList: res.data.goodVoList[g].goodLabelPriceList
        })
        goodsPriceCopy.push({
          price: res.data.goodVoList[g].price,
          goodLabelPriceList: res.data.goodVoList[g].goodLabelPriceList
        })
      }
      var specificationList1 = this.testProduct(specificationList); // 规范规格数据
      goodsPrice = JSON.stringify(goodsPrice)
      goodsPrice = JSON.parse(goodsPrice)
      goodsPriceCopy = JSON.stringify(goodsPriceCopy)
      goodsPriceCopy = JSON.parse(goodsPriceCopy)
      this.setData({
        detail: res.data,
        specificationList: specificationList,
        specificationList1: specificationList1,
        goodsPrice: goodsPrice,
        goodsPriceCopy: goodsPriceCopy
      })
      console.log(this.data.detail)
    })
  },
  // 食堂等级列表对应价格(2020/12/8新增)
  labelInfoWith(canteenLabelList, goodLabelPriceList) {
    var list = []
    for(var i=0;i<canteenLabelList.length;i++){
        list.push({
            id: canteenLabelList[i].id,
            name: canteenLabelList[i].labelName,
            goodPrice: ''
        })
        for(var j=0;j<goodLabelPriceList.length;j++){
            if(canteenLabelList[i].id == goodLabelPriceList[j].labelName){
                list[i].goodPrice = goodLabelPriceList[j].goodPrice
            }
        }
    }
    return list
  },
  // 最新报价数据
  getLast(){
    product.lastProductPrice({
      productId: this.data.id
    }, res => {
      if(res.data.length>0){
        var obj = {}
        for(var i=0;i<res.data.length;i++){
          res.data[i].goodLabelPriceList = this.labelInfoWith(this.data.canteenLabelList, res.data[i].goodLabelPriceList)
          obj[res.data[i].goodId] = res.data[i]
        }

        this.setData({
          lastPrice: obj
        })
      }
    })
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getStatistics({
      productId: this.data.id
    })
  },
  // 规范规格数据
  testProduct(propererList) {
    var y = 1;
    for (var i = 0; i < propererList.length; i++) {
      y = y * propererList[i].p_enums.length;
    }
    var array = [];
    for (var i = 0; i < propererList.length; i++) {
      array[i] = new Array(y);
    }
    var copy = y / propererList[0].p_enums.length;
    for (var i = 0; i < propererList.length; i++) {
      var element = propererList[i];
      var pEnums = element.p_enums;
      var yIndex = 0;
      this.diguiCopy(copy, pEnums, array, yIndex, i, y);
      if (i < propererList.length - 1) {
        copy = copy / propererList[i + 1].p_enums.length;
      }
    }
    return array;
  },
  diguiCopy(copy, pEnums, array, yIndex, i, y) {
    for (var j = 0; j < pEnums.length && yIndex < y; j++) {
      //复制copy次
      for (var k = 0; k < copy; k++) {
        array[i][yIndex] = pEnums[j];
        yIndex++;
      }
    }
    //复制完判断是否复制完了
    if (yIndex < y) {
      //接着复制
      this.diguiCopy(copy, pEnums, array, yIndex, i, y);
    }
  },

  // 查询报价统计数据
  onConfirm: utils.throttle(function (e) {
    this.getStatistics({
      startTime: this.data.date,
      endTime: this.data.date2,
      productId: this.data.id
    })
  }),
  // 获取报价统计数据
  getStatistics(params){
    product.listProductUpdatePriceRecord(params, res => {
      if(res.data){
        if(res.data[0].goodPriceWithTimeVoList.length==0){
          this.setData({
            chartFlag: true
          })
          
          return
        }else{
          this.data.chartFlag = false
          
        }
        this.setData({
          echartData: res.data,
          canvasTemImg: ''
        })

        this.releaseEchartData(res.data, null)
      }
    })
  },
  onPriceTypeSelect() {
    this.setData({
      priceTypeShow: true
    })
  },
  onPriceTypeListConfirm(e) {
    // console.log(e)
    var index = e.detail.index
    if(index == 0){
      this.releaseEchartData(this.data.echartData, null)
    }else{
      this.releaseEchartData(this.data.echartData, this.data.canteenLabelList[Number(index)-1].id)
    }
    this.setData({
      priceTypeShow: false,
      canvasTemImg: '',
      priceTypeSelected: index
    })
  },
  /**
   * 构造表格数据
   * @param respData 后端响应的数据 response.data
   * @param labelId 标签id 字符串 如果不传，就默认显示销售价的柱状图
   */
  releaseEchartData(respData, labelId){
    if (respData){
      var xAxisData = []
      var seriesData = []
      for(var i=0;i<respData.length;i++){
        var a = {
          name: respData[i].skuName,
          color: this.data.colorList[i<14?i:(i%14)],
          data: []
        }
        for(var k=0;k<respData[i].goodPriceWithTimeVoList.length;k++){
          // 查找价格，如果传递了标签，就查找对应的标签的价格
          var goodPriceWithTimeVo = respData[i].goodPriceWithTimeVoList[k];
          var price = goodPriceWithTimeVo.price;
          // 判断是否传递了标签
          if (labelId != null && labelId != ''){
              // 商品的标签价格列表
              var goodLabelPriceList = goodPriceWithTimeVo.goodLabelPriceList;
              if (goodLabelPriceList){
                  // 进行查找
                  for (var j = 0; j < goodLabelPriceList.length; j++) {
                      var goodLabelPrice = goodLabelPriceList[j];
                      if (goodLabelPrice.labelName == labelId){
                          price = goodLabelPrice.goodPrice;
                          break;
                      }
                  }
              }
          }
          a.data.push(price)
        }
        seriesData.push(a)
      }
      for(var j=0;j<respData[0].goodPriceWithTimeVoList.length;j++){
        xAxisData.push(respData[0].goodPriceWithTimeVoList[j].time)
      }

      this.setData({
        legendData: seriesData
      })
      this.getChart(xAxisData,seriesData) 
    }
},
  // 画图表
  getChart(xAxisData,seriesData){
    var _this = this
    _this.setData({
      chartFlag: false
    })
    var chart = new Charts({
      canvasId: 'canvas',
      type: 'column',
      categories: xAxisData,
      series: seriesData,
      yAxis: {
        min: 0,
        format: function (val) {
          return val
        }
      },
      width: 375,
      height: 250,
      legend: false,
    });
    // 监听画笔画完
    chart.addEventListener('renderComplete', () => {
      _this.draw()
    });
  },
  // 图标生成图片
  draw(){
    var _this = this
    wx.canvasToTempFilePath({
      canvasId:'canvas',
      quality: 1,
      success: res => {
        _this.setData({
          canvasTemImg: res.tempFilePath
        })
      },
      fail: res => {
        console.log(res)
      }
    },this)

  },

  // 操作
  onPrice(e){
    var index = e.currentTarget.dataset.index
    var modifyItem = this.data.goodsPrice[index]
    for(var i=0;i<modifyItem.goodLabelPriceList.length;i++){
      modifyItem.goodLabelPriceList[i].goodPrice = modifyItem.goodLabelPriceList[i].goodPrice?modifyItem.goodLabelPriceList[i].goodPrice:modifyItem.price
    }
    this.setData({
      modifyItem: modifyItem,
      pindex: index,
      show2: true
    })
  },
  onPPrice(e){
    var modifyItem = this.data.modifyItem
    modifyItem.price = e.detail
    this.setData({
      modifyItem: modifyItem
    })
  },
  onLPrice(e){
    var index = e.currentTarget.dataset.index
    var modifyItem = this.data.modifyItem
    modifyItem.goodLabelPriceList[index].goodPrice = e.detail
    this.setData({
      modifyItem: modifyItem
    })
  },
  onCancel2(){
    this.setData({
      show2: false
    })
  },
  onConfirm2(event){
    var modifyItem = this.data.modifyItem
    if(!modifyItem.price){
      utils.msg('销售价不能为空')
      event.detail.dialog.stopLoading(); // 可以通过 stopLoading() 在外部关闭按钮的 loading
      return
    }
    var flag = true
    for(var i=0;i<modifyItem.goodLabelPriceList.length;i++){
      if(!modifyItem.goodLabelPriceList[i].goodPrice){
        flag = false
        utils.msg(modifyItem.goodLabelPriceList[i].name+'价格不能为空')
        event.detail.dialog.stopLoading(); // 可以通过 stopLoading() 在外部关闭按钮的 loading
        break
      }
    }
    if(!flag){
      return
    }
    var goodsPrice = this.data.goodsPrice
    goodsPrice[this.data.pindex] = modifyItem
    this.setData({
      goodsPrice: goodsPrice
    })
    console.log(this.data.goodsPrice)
    event.detail.dialog.close()
  },

  // 取消报价
  onCancel: utils.throttle(function (e) {
    // 1首页，2报价，3搜索
    // if(this.data.type == 1 || this.data.type == 2){
      let pages = getCurrentPages();
      let prevPage = pages[pages.length - 2];
      // 设置上一页不在onShow的时候重新加载数据，在本页设置刷新列表
      prevPage.data.fLoad = true
    // }
    wx.navigateBack()
  }),
  
  // 提交
  onSubmit: utils.throttle(function (e) {
    var _this = this
    var productDetail = this.data.detail
    var goodList = []; //规格明细
    if(JSON.stringify(this.data.goodsPrice) == JSON.stringify(this.data.goodsPriceCopy)){ // 判断是否进行报价
      utils.msg('还未进行修改')
      return
    }
    for(var x=0;x<this.data.specificationList1[0].length;x++){
      var pp = {
        "goodImage": '',
        "price": this.data.goodsPrice[x].price,
        "stockCount": 99999,
        "goodSpecParamsList":[], //商品的规格
        "goodLabelPriceList": [] // 食堂等级价格(2020/12/5新增)
      };
      for(var y=0;y<this.data.specificationList1.length;y++){
        var e = {
          specName: this.data.specificationList[y].name,
          specValue: this.data.specificationList1[y][x]
        }
        pp.goodSpecParamsList.push(e);
      }
      
      // 食堂等级价格(2020/12/5新增)
      for(var g=0;g<this.data.goodsPrice[x].goodLabelPriceList.length;g++){
        pp.goodLabelPriceList.push({
            labelName: this.data.goodsPrice[x].goodLabelPriceList[g].id,
            goodPrice: this.data.goodsPrice[x].goodLabelPriceList[g].goodPrice
        })
    }
      goodList.push(pp)
    }
    var productSpecParamsList = []
    for(var i=0;i<productDetail.productSpecVoList.length;i++){
      var a ={
        specName: productDetail.productSpecVoList[i].specName,
        specValueList: []
      }
      for(var j=0;j<productDetail.productSpecVoList[i].productSpecValueList.length;j++){
        var b ={
          imageValue: '',
          value: productDetail.productSpecVoList[i].productSpecValueList[j].specValue 
        }
        a.specValueList.push(b)
      }
      productSpecParamsList.push(a)
    }

    var param = {
      id:this.data.id,
      name: productDetail.name,// 名称
      brand: productDetail.brand,// 商品品牌
      categoryId: productDetail.categoryId,//所属分类
      unit: productDetail.unit,// 单位
      searchKeyWord: productDetail.searchKeyWord, // 搜索关键字
      updateStatus: productDetail.updateStatus,// 是否可改单
      publicStatus: productDetail.publicStatus, // 是否公示
      quoteStatus: productDetail.quoteStatus, // 是否需报价
      productSpecParamsList: productSpecParamsList, //规格与规格值
      goodList: goodList, // 商品列表
      reportDueTime: productDetail.reportDueTime, // 检测报告到期时间
      mainImage: productDetail.mainImage, // 商品主图
      smallPic: productDetail.smallPic, // 商品图片
      content: productDetail.content, // 商品详情
      annexFiles: productDetail.annexFiles, // 附件
      shelfStatus: productDetail.shelfStatus, // 上下架状态
    } 
    // 报价
    product.productQuote(JSON.stringify(param),function(res){
      setTimeout(function(){
        utils.msg('操作成功',1500,function(){
          setTimeout(function(){
            // 1首页，2报价，3搜索
            let pages = getCurrentPages();
            let prevPage = pages[pages.length - 2];
            // 设置上一页不在onShow的时候重新加载数据，在本页设置刷新列表
            prevPage.data.fLoad = true
            var goodsList = prevPage.data.goodsList
            // 获取价格范围
            var prList = []
            for(var pr=0;pr<_this.data.goodsPrice.length;pr++){
              prList.push(_this.data.goodsPrice[pr].price)
            }
            prList.sort()
            var priceRange = ''
            if(prList.length == 0){
              priceRange = prList[0]
            }else{
              priceRange = prList[0] + '-' + prList[prList.length-1]
            }
            console.log(priceRange)
            goodsList[_this.pageindex].priceRange = priceRange
            goodsList[_this.pageindex].quoteStatus = 1
            // 修改这条数据
            prevPage.setData({
              goodsList: goodsList
            })
            wx.navigateBack()
          },500);
        })
      },400)
    })
  }),



  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    let pages = getCurrentPages();
    let prevPage = pages[pages.length - 2];
    // 设置上一页不在onShow的时候重新加载数据，在本页设置刷新列表
    prevPage.data.fLoad = true
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})